iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0

設定排程

我們有時候會希望電腦能幫我們每一段時間就自動做一次指定動作,像是每天備份資料1次,或者每兩週更新系統一次。這時候我們可以設定系統排程來自動執行指定工作

在Linux中主要使用cron來管理排程,cron常用於運維和管理,但也可用於其他地方,如:定期下載文件和郵件。
而crontab是用來可以用於創建、編輯或刪除任務讓cron幫忙在指定時間執行(也稱為crontab文件)。

crontab

  • 語法: crontab [ -u user ] [ -i ] { -e | -l | -r }
    • -u: 指定用戶
    • -i: 執行動作前確認
    • -e: 編輯任務
    • -l: 列出目前任務
    • -r: 刪除crontab文件
  • 文件語法: minute hour day_of_month month day_of_week command
    其中日期部分皆為一種表達式:
    • 逗號(,)表示列舉,例如: 1,3,4,7 * * * * echo hello world 表示,在每小時的1、3、4、7分時,列印"hello world"。
    • 連詞符(-)表示範圍,例如:1-6 * * * * echo hello world ,表示,每小時的1到6分鐘內,每分鐘都會列印"hello world"。
    • 星號(*)代表任何可能的值。例如:在「小時域」里的星號等於是「每一個小時」。
      • 若想表示每n時間域單位時間執行一次可以使用*/num,代表每(時間域單位時間/num)會執行一次。例如:*/6 * * * * echo hello world 表示,每(60/6=10)分鐘列印一回"hello world"。
      • 百分號(%) 表示「每單位時間執行一次。例如:*%10 * * * * echo hello world 表示,每10分鐘列印一回"hello world"。
  • 日期部分也可用以下keyword代替

keyword

Keyword 頻率 等價於(日期語法)
@reboot 啟動時 x
@yearly 每年的指定時間 20 4 9 6 * (在6月9日4:20執行)
@annually 同上 同上
@monthly 每個月的指定時間 20 4 1 * * (在1日4:20執行)
@weekly 每周的指定時間 20 4 * * 0 (每周日4:20執行)
@daily 每天的指定時間 9 6 * * * (每天6:09執行)
@midnight 同上 同上
@hourly 每小時的指定時間 51 * * * * (每小時的:51執行)

REF

https://zh.wikipedia.org/zh-tw/Cron
https://wiki.archlinux.org/title/Cron_(%E6%AD%A3%E9%AB%94%E4%B8%AD%E6%96%87)


上一篇
Day22: 其他使用者相關指令與檔案
下一篇
Day24: 設定網路
系列文
I Use Linux BTW: 談Linux與其指令30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言